﻿using DataType.CustomEnumType;

namespace DataType.JudgeResults
{
    public class ShootingJudgeResult : IJudgeResult
    {
        private int obj_id;
        private ActionType action_type = ActionType.Shoot;
        private bool is_success;
        private bool is_shooting = true;
        private BulletType bullet_type;
        private JudgeType type = JudgeType.Shoot;
        private int att_level;
        private int att_obj_blood;
        private int att_obj_id;
        private Color attack_color;
        private OprSubType attack_sub_type;
        private int damage;
        private int distance;
        private int ele_diff;
        private int ori_damage;
        private int random1;
        private int random2;
        private int random2_rect;
        private int rect_damage;
        private Color target_color;
        private int target_obj_id;
        private OprSubType target_sub_type;
        private WeaponType wp_id;

        public int ObjID => obj_id;

        public ActionType ActionType => action_type;

        public bool IsSuccess => is_success;

        public bool IsShooting => is_shooting;

        public BulletType BulletType => bullet_type;

        public JudgeType Type { get => type; set => type = value; }

        public int AttLevel { get => att_level; set => att_level = value; }

        public int AttObjBlood { get => att_obj_blood; set => att_obj_blood = value; }

        public int AttObjID { get => att_obj_id; set => att_obj_id = value; }

        public Color AttackColor { get => attack_color; set => attack_color = value; }

        public OprSubType AttackSubType { get => attack_sub_type; set => attack_sub_type = value; }

        public int Damage { get => damage; set => damage = value; }

        public int Distance { get => distance; set => distance = value; }

        public int EleDiff { get => ele_diff; set => ele_diff = value; }

        public int OriDamage { get => ori_damage; set => ori_damage = value; }

        public int Random1 { get => random1; set => random1 = value; }

        public int Random2 { get => random2; set => random2 = value; }

        public int Random2Rect { get => random2_rect; set => random2_rect = value; }

        public int RectDamage { get => rect_damage; set => rect_damage = value; }

        public Color TargetColor { get => target_color; set => target_color = value; }

        public int TargetObjID { get => target_obj_id; set => target_obj_id = value; }

        public OprSubType TargetSubType { get => target_sub_type; set => target_sub_type = value; }

        public WeaponType WeaponID { get => wp_id; set => wp_id = value; }
        public ShootingJudgeResult(int obj_id, bool is_success, BulletType bullet_type, int att_level, int att_obj_blood, int att_obj_id, Color attack_color, OprSubType attack_sub_type, int damage, int distance, int ele_diff, int ori_damage, int random1, int random2, int random2_rect, int rect_damage, Color target_color, int target_obj_id, OprSubType target_sub_type, WeaponType wp_id)
        {
            this.obj_id = obj_id;
            this.is_success = is_success;
            this.bullet_type = bullet_type;
            this.att_level = att_level;
            this.att_obj_blood = att_obj_blood;
            this.att_obj_id = att_obj_id;
            this.attack_color = attack_color;
            this.attack_sub_type = attack_sub_type;
            this.damage = damage;
            this.distance = distance;
            this.ele_diff = ele_diff;
            this.ori_damage = ori_damage;
            this.random1 = random1;
            this.random2 = random2;
            this.random2_rect = random2_rect;
            this.rect_damage = rect_damage;
            this.target_color = target_color;
            this.target_obj_id = target_obj_id;
            this.target_sub_type = target_sub_type;
            this.wp_id = wp_id;
        }
    }
}
